package com.deductive.domain.special;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.deductive.common.config.mybatis.GeoJsonToGeometryDeserializer;
import com.deductive.common.config.mybatis.GeometryToGeoJsonSerializer;
import com.deductive.common.config.mybatis.GeometryTypeHandler;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.locationtech.jts.geom.Geometry;

/**
 * 港口
 * @TableName special_seaport
 */
@ApiModel(value = "SpecialSeaport", description = "港口信息")
@TableName(value ="special_seaport")
@Data
public class SpecialSeaport implements Serializable {
    /**
     * id
     */
    @ApiModelProperty(value = "主键ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 空间几何数据
     */
    @ApiModelProperty(value = "空间几何数据")
    @TableField(value = "geom", typeHandler = GeometryTypeHandler.class)
    @JsonSerialize(using = GeometryToGeoJsonSerializer.class)
    @JsonDeserialize(using = GeoJsonToGeometryDeserializer.class)
    private Geometry geom;

    /**
     * 名称
     */
    @ApiModelProperty(value = "名称")
    @TableField(value = "name")
    private String name;

    /**
     * 英文名称
     */
    @ApiModelProperty(value = "英文名称")
    @TableField(value = "english_name")
    private String englishName;

    /**
     * 国家
     */
    @ApiModelProperty(value = "国家")
    @TableField(value = "country")
    private String country;

    /**
     * 类型
     */
    @ApiModelProperty(value = "类型")
    @TableField(value = "type")
    private String type;

    /**
     * 内河沿海
     */
    @ApiModelProperty(value = "内河沿海")
    @TableField(value = "inland_river_and_coastal_areas")
    private String inlandRiverAndCoastalAreas;

    /**
     * 概述
     */
    @ApiModelProperty(value = "概述")
    @TableField(value = "overview")
    private String overview;

    /**
     * 地理区位
     */
    @ApiModelProperty(value = "地理区位")
    @TableField(value = "address")
    private String address;

    /**
     * 吃水深
     */
    @ApiModelProperty(value = "吃水深")
    @TableField(value = "deep_draft")
    private String deepDraft;

    /**
     * 码头长度
     */
    @ApiModelProperty(value = "码头长度")
    @TableField(value = "ingth")
    private String ingth;

    /**
     * 泊位数
     */
    @ApiModelProperty(value = "泊位数")
    @TableField(value = "number_of_berths")
    private String numberOfBerths;

    /**
     * 靠泊能力
     */
    @ApiModelProperty(value = "靠泊能力")
    @TableField(value = "berthing_capacity")
    private String berthingCapacity;

    /**
     * 年吞吐量
     */
    @ApiModelProperty(value = "年吞吐量")
    @TableField(value = "annual_through_put")
    private String annualThroughPut;

    /**
     * 年吞吐量统计年份
     */
    @ApiModelProperty(value = "年吞吐量统计年份")
    @TableField(value = "statiscal_year_of_annual_through")
    private String statiscalYearOfAnnualThrough;

    /**
     * 通航时限
     */
    @ApiModelProperty(value = "通航时限")
    @TableField(value = "navigation_time_limit")
    private String navigationTimeLimit;

    /**
     * 港口功能
     */
    @ApiModelProperty(value = "港口功能")
    @TableField(value = "port_functions")
    private String portFunctions;

    /**
     * 码头情况
     */
    @ApiModelProperty(value = "码头情况")
    @TableField(value = "dock_situation")
    private String dockSituation;

    /**
     * 气象
     */
    @ApiModelProperty(value = "气象")
    @TableField(value = "meteorology")
    private String meteorology;

    /**
     * 自然情况
     */
    @ApiModelProperty(value = "自然情况")
    @TableField(value = "natural_conditions")
    private String naturalConditions;

    /**
     * 航道
     */
    @ApiModelProperty(value = "航道")
    @TableField(value = "waterway")
    private String waterway;

    /**
     * 航法
     */
    @ApiModelProperty(value = "航法")
    @TableField(value = "sailing_method")
    private String sailingMethod;

    /**
     * 所属海湾
     */
    @ApiModelProperty(value = "所属海湾")
    @TableField(value = "thegulf")
    private String thegulf;

    /**
     * 设施
     */
    @ApiModelProperty(value = "设施")
    @TableField(value = "facility")
    private String facility;

    /**
     * 使用状态
     */
    @ApiModelProperty(value = "使用状态")
    @TableField(value = "use_state")
    private String useState;

    /**
     * 经度
     */
    @ApiModelProperty(value = "经度")
    @TableField(value = "lon")
    private Double lon;

    /**
     * 纬度
     */
    @ApiModelProperty(value = "纬度")
    @TableField(value = "lat")
    private Double lat;

    /**
     * 来源
     */
    @ApiModelProperty(value = "来源")
    @TableField(value = "source")
    private String source;

    /**
     * 使用方
     */
    @ApiModelProperty(value = "使用方")
    @TableField(value = "user_party")
    private String userParty;

    /**
     * 其他
     */
    @ApiModelProperty(value = "其他")
    @TableField(value = "other")
    private String other;

    /**
     * 父Id
     */
    @ApiModelProperty(value = "父Id")
    @TableField(value = "parent_id")
    private Integer parentId;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}